package object;

/**
 * 变量的作用域
 */
public class VarScope {

    public static void main(String[] args) {
        /*
            在java编程中，主要的变量就是属性(成员变量)和局部变量
            局部变量一般是指在成员方法中定义的变量
            java中作用域的分类：
                1)全局变量：也就是属性，作用域为整个类
                2)局部变量：也就是除了属性之外的其他变量，作用域为定义它的代码块中
            全局变量(属性)可以不赋值，直接使用因为有默认值。局部变量必须赋值后才能使用，因为没有默认值
         */
    }
}

class VarScopeTest {

    int age = 10;

    double weight;//默认值0.0

    public void hi() {

        //局部变量必须赋值后，才能使用
        int num;
        String address = "北京的猫";
        //必须赋值，否则报错
//        System.out.println("num = " + num);
        System.out.println("address = " + address);
        System.out.println("weight = " + weight);
    }

    public void cry() {
        //n 和 name 就是局部变量，作用域只在 cry 方法中
        int n = 10;
        String name = "jack";

        System.out.println("在cry()中使用属性 age = " + age);
    }

    public void eat() {
        System.out.println("在 eat 中使用属性 age = " + age);
        //name的作用域不在eat中，报错
//        System.out.println("在 eat 中使用cry的变量 name = " + name);
    }
}
